There are continually increasing numbers of terminals and mobile devices in use today, such as smart phones, PDAs with wireless communication capabilities, personal computers, self-service kiosks and two-way pagers/communication devices. Software applications which run on these devices help to increase their utility. For example, a smart phone may include an application which retrieves the weather for a range of cities, or a PDA which may include an application that allows a user to shop for groceries. These software applications take advantage of the connectivity to a network in order to provide timely and useful services to users. However, due to the restricted resources of some devices, and the complexity of delivering large amounts of data to the devices, developing and maintaining software applications tailored for a variety of devices remains a difficult and time-consuming task.
Devices from different manufacturers expose native application data entities (NADEs) by providing their native application programming interfaces (APIs), which are usually not compliant with one other. Following the traditional way of developing a native application, a third party application vendor tailors or re-develops native applications on a per-device manner in order to use specific vendors' proprietary function calls (native APIs) to access NADEs resident in onboard memory of the device. Furthermore, for a specific device, the same piece of code for each of the respective native APIs has to be rewritten or otherwise tailored for each of its device specific native applications in order to access the device's respective NADEs. This revision (i.e. versioning) of native APIs could be avoided by somehow sharing the code of the native APIs among these native applications.
Systems and methods disclosed herein provide a development tool to obviate or mitigate at least some of the above-presented disadvantages.